基礎Unity-狐狸島

基礎Unity-狐狸島:

DEMO

DEMO 影片

github連結

(一) 概要:

剛學習Unity時的作品,是一款2D遊戲,主要實現的內容包括:腳色操作、Tilemap、敵人簡易AI、UI介面、音效、燈光以及場景。在實作的過程中,了解如何使用Unity,並且輸出遊戲檔。

(圖一)狐狸島遊戲截圖。

(二) 遊戲玩法

透過WASD來操控腳色移動,收集場上的櫻桃。唯一的難點在於最高處的那顆櫻桃,僅有一次機會可以得到它,最終目標是,走到最後的門,進入下一關。第二關並未製作完成。

(三) 腳色操作

透過給予剛體,提供力量,給予玩家的物件移動的力,從而達到移動的目的。此外,也撰寫一個動畫控制的方法,作為玩家物件面朝哪個方向、跳躍、趴下時的動畫控制。

在跳躍上,設置一個檢測器,以確保玩家在地面,才可以進行跳躍,並限制為二段跳。而在碰觸到敵人時,設置一個擊退效果,以及受傷的動畫。此外,玩家死亡時,將場景重設,重新開始遊戲。

而如果目前玩家動畫為跳躍完的下落,且碰觸到敵人時,則透過OnTriggerEnter2D,將敵人消滅。

1.	void Movement()  
2.	    {  
3.	        float horizontalMove = Input.GetAxisRaw("Horizontal");  
4.	        float facedircetion = Input.GetAxisRaw("Horizontal");  
5.	        rb.velocity = new Vector2(horizontalMove*speed, rb.velocity.y);  
6.	        anim.SetFloat("running", Mathf.Abs(facedircetion));  
7.	  
8.	        //腳色移動  
9.	        if (horizontalMove != 0)  
10.	        {  
11.	            transform.localScale = new Vector3(horizontalMove, 1, 1);  
12.	        }  
13.	  
14.	        //腳色跳躍    
15.	        Crouch();  
16.	    }

(圖二)基本腳色移動程式碼 ( Sunnyland\Assets\Scripts\Player_Controller.cs) (完整程式碼可在附錄的遊戲檔中取得。以下省略,僅保留程式碼路徑)。

(四) Tilemap

透過Unity內建的Tilemap功能,可以輕鬆地建立一個2D像素化地圖,對於獨立遊戲開發者而言是非常有效益的選擇,因此我也使用了這樣的方式來創建我的地圖。此外,我亦給背景添加了不同的圖層,以達到豐富遊戲介面的效果。

(圖三)使用Tilemap繪製地圖。

(五) 敵人AI

在遊戲中,我給兩種敵人添加了不同的簡易AI。老鷹單純的添加上下移動的指令,至於青蛙則是透過動畫以及代碼的配合,做出了青蛙跳躍的感覺。兩種敵人身上都放有碰撞器,以作為實體,阻擋玩家的前進。而為了將這兩隻敵人限制在一定範圍內,我也放置了兩個空物件,作為他們移動的邊緣。

(圖四)青蛙跳躍的效果。

(六) UI介面

在UI介面上,我添加了左上角的收集數量,以及暫停介面,按鈕的實作。此外,還有對話框的實現。其中的收集數量,則是透過代碼實現實時同步。至於暫停介面,亦添加了調整音效的滑桿。

(圖五、六、七)UI介面展示。

(七) 音效系統

透過掛載Audio Source在玩家物件上,並在程式碼中引用,可以視情況撥放不同的音效。例如:被擊中的音效、背景音樂等

(圖八)Audio Source。

(八) 燈光效果

第二個關卡中,加入光的要素,在Unity中可以使用不同的光源,來為場景提供想要的光影效果,在這個遊戲中,我簡單的添加了幾個點光源,並學習如何在遊戲中使用光源,來增添遊戲的美感。

(圖九)在玩家和火焰物件上的點光源。

(九) 場景

一款遊戲中必須得有不同的場景,作為分別關卡的依據或介面等。在這款遊戲中,簡易的使用了三個場景,一個是遊戲開始介面,透過按鈕,使用已經編寫好的程式,進入第一關。而在第一關最後,則可以透過接觸到門,按下E從而進入第二關。其中包括場景的轉換等。

(圖十)場景設定介面。


基礎Unity-狐狸島
https://z-hwa.github.io/webHome/[object Object]/Game-develope/基礎Unity-狐狸島/
作者
crown tako
發布於
2021年10月11日
許可協議